// 这个文件用来封装接口
// 导入axios组件
import axios from 'axios'

// 设置axios基准路径
axios.defaults.baseURL = 'http://localhost:8888/api/private/v1/'

// 设置axios拦截器，请求头拦截，把token值设置到请求头中
axios.interceptors.request.use(function (config) {
  // 获取token值
  var token = localStorage.getItem('token')
  // 判断是否有token
  if (token) {
    // 绑定请求头,接口请求头必须设置为Authorization=token,这是前后台所规定的
    config.headers.Authorization = token
  }
  console.log(config)
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})

// axios请求，这个过程会有一个返回值，返回的是对象
// export const login = function (obj) {
//   return axios.post('login', obj)
// }
// axios请求优化，因为只有一个参数，可省略return，会返回值，返回的是对象。需要在Login组件中引用
export const login = (obj) => axios.post('login', obj)

// 用户数据列表请求，需要在Home组件中引用，obj中包含3个参数，分别为query、pagenum、pagesize
export const getUserList = (obj) => axios.get('users', { params: obj })

// 添加用户请求，需要在Userlist组件中引用，obj中包含4个参数，分别为username.password.email,mobile
export const addUser = (obj) => axios.post('users', obj)

// 删除用户请求，需要在Userlist组件中引用,删除用户需要传入id值,通过反引号的方式获取数据
export const delUser = (id) => axios.delete(`users/${id}`)

// 编辑用户请求，需要在Userlist组件中引用，编辑用户需要传入id、email、mobile，通过反引号的方式获取数据
export const editUser = (obj) => axios.put(`users/${obj.id}`, obj)

// 编辑用户状态，需要在Userlist组件中引用，用户状态需要传入id、type,传输的格式按照要求进行传递
export const statusUser = (obj) => axios.put(`users/${obj.id}/state/${obj.type}`)

// 获取角色列表数据，需要在Userlist组件中引用，不用传入参数
export const rolesList = () => axios.get('roles')

// 修改用户角色，需要在Userlist组件中引用，需要传入用户id和角色id
export const checkedrole = (id, rid) => axios.put(`users/${id}/role`, { rid: rid })

// 获取角色列表中的数据，需要在Roles组件中引用，不需要传入参数
export const getRoles = () => axios.get('roles')

// 删除角色指定权限的数组，需要在Roles组件中引入，需要传入roleid和rightid
export const delRoles = (roleid, rightid) => axios.delete(`roles/${roleid}/rights/${rightid}`)

// 权限列表数据获取,需要在RightList组件中引入，需要设置list或者tree。list代表列表显示权限，tree代表树状显示权限
export const getrights = (type) => axios.get(`rights/${type}`)

// 角色授权修改，需要在Roles组件中引入，需要传入roleid和rids
export const setRolesChecked = (roleId, rids) => axios.post(`roles/${roleId}/rights`, { rids })

// 左侧菜单栏权限的数据请求，需要在Home组件中进行引入，不需要传参
export const menusList = () => axios.get('menus')

// 商品分类数据获取，需要在categories组件中引入，需要传入3个参数，type/pagenum/pagesize
// 文档接口有错误
export const getCategories = (type, pagenum, pagesize) => axios.get('categories', { params: type, pagenum, pagesize })

// 商品分类数据中级联选择器获取数据，需要在categories组件中引入，需要传入1个参数，type
export const getCategoriesSelect = (type) => axios.get('categories', { params: type })
